在 520 这天,竟然有人把 Docker讲清楚了? | 原力计划
作者 | 夏目 "
责编 | 王晓曼
头图 | CSDN下载自东方IC
出品 | CSDN博客
1、了解Docker的前生LXC
容器化越来越受欢迎
灵活:即使是最复杂的应用也可以集装箱化
轻量级:容器利用并共享主机9内核
可互换:您可以即时部署更新和升级
便携式:您可以在本地构建,部署到云,并在任何地方运行
可扩展:您可以增加并自动分发容器副本
可堆叠:您可以垂直和即时堆叠服务
Cgroup的API以一个伪文件系统的实现方式,用户的程序可以通过文件系统实现Cgroup的组件管理
Cgroup的组件管理操作单元可以细粒度到线程级别,另外用户可以创建和销毁Cgroup,从而实现资源载分配和再利用
所有资源管理的功能都以子系统的方式实现,接口统一子任务创建之初与其父任务处于同一个Cgroup的控制组
资源限制:可以对任务使用的资源总额进行限制
优先级分配:通过分配的CPU时间片数量以及磁盘IO带宽大小,实际上相当于控制了任务运行优先级
资源统计:可以统计系统的资源使用量,如CPU时长,内存用量等
任务控制:Cgroup可以对任务执行挂起、恢复等操作
发布服务不用担心服务器的运行环境,所有的服务器都是自动分配Docker,自动部署,自动安装,自动运行
再不用担心其他服务引擎的磁盘问题,CPU问题,系统问题了
资源利用更出色
自动迁移,可以制作镜像,迁移使用自定义的镜像即可迁移,不会出现什么问题
管理更加方便了
面向产品:产品交付
面向开发:简化环境配置
面向测试:多版本测试
面向运维:环境一致性
面向架构:自动化扩容(微服务)
Distribution负责与Dockerregistry交互,上传洗澡镜像以及V2 registry 有关的源数据
Registry负责Docker registry有关的身份认证、镜像查找、镜像验证以及管理Registry mirror等交互操作
Image负责与镜像源数据有关的存储、查找,镜像层的索引、查找以及镜像TAR包有关的导入、导出操作
Reference负责存储本地所有镜像的Repository和tag名,并维护与镜像Id之间的映射关系
Layer模块负责与镜像层和容器层源数据有关的增删改查,并负责将镜像层的增删改查映射到实际存储镜像层文件的Graphdriver模块
Graghdriver是所有与容器镜像相关操作的执行者
主要的模块有:Docker Client、Docker Daemon、Docker Registry、Graph、Driver、Libcontainer以及Docker Container。
用户通过指定容器镜像,使得Docker容器可以自定义Rootfs等文件系统
用户通过指定计算资源的配额,使得Docker容器使用指定的计算资源
用户通过配置网络及其安全策略,使得Docker容器拥有独立且安全的网络环境
用户通过指定运行的命令,使得Docker容器执行指定的工作